package cn.ycgogo.org.basic.mapper;


import cn.ycgogo.org.basic.query.BaseQuery;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Base抽取公共接口Mapper
 * @author L1vezZ
 * @param <T> the type parameter
 */
@Repository
public interface BaseMapper<T> {

    /**
     * Save. 添加方法
     * @param t the t
     */
    void save(T t);

    /**
     * Update. 修改方法
     * @param t the t
     */
    void update(T t);

    /**
     * Remove. 删除方法
     * @param id 部门ID
     */
    void remove(Long id);

    /**
     * Load by id T. 查询单个部门
     * @param id 部门ID
     * @return 返回部门对象 T
     */
    T loadById(Long id);

    /**
     * Load all list. 查询所有部门
     * @return 返回所有部门集合 list
     */
    List<T> loadAll();

    /**
     * Query count long. 查询部门个数
     * @param query 分页实体参数
     * @return 返回部门个数 integer
     */
    Integer queryCount(BaseQuery query);

    /**
     * Query data list. 查询分页数据
     * @param query 分页实体参数
     * @return 返回分页部门集合 list
     */
    List<T> queryData(BaseQuery query);

    /**
     * Patch dele.
     * @param ids the ids
     */
    void patchDele(List<Long> ids);
}
